export interface AbpConfig {
    localization: Localization;
    auth: Auth;
    setting: Setting;
    currentUser: CurrentUser;
    features: Features;
    globalFeatures: GlobalFeatures;
    multiTenancy: MultiTenancy;
    currentTenant: CurrentTenant;
    timing: Timing;
    clock: Clock;
    objectExtensions: ObjectExtensions;
    extraProperties: Values;
}

interface ObjectExtensions {
    modules: Values;
    enums: Values;
}

interface Clock {
    kind: string;
}

interface Timing {
    timeZone: TimeZone;
}

interface TimeZone {
    iana: Iana;
    windows: Windows;
}

interface Windows {
    timeZoneId: string;
}

interface Iana {
    timeZoneName: string;
}

interface CurrentTenant {
    id?: any;
    name?: any;
    isAvailable: boolean;
}

interface MultiTenancy {
    isEnabled: boolean;
}

interface GlobalFeatures {
    enabledFeatures: any[];
}

interface Features {
    values: Values3;
}

interface Values3 {
    'SettingManagement.Enable': string;
    'SettingManagement.AllowChangingEmailSettings': string;
}

interface CurrentUser {
    isAuthenticated: boolean;
    id: string;
    tenantId?: any;
    impersonatorUserId?: any;
    impersonatorTenantId?: any;
    impersonatorUserName?: any;
    impersonatorTenantName?: any;
    userName: string;
    name: string;
    surName?: any;
    email: string;
    emailVerified: boolean;
    phoneNumber?: any;
    phoneNumberVerified: boolean;
    roles: string[];
}

interface Setting {
    values: Values2;
}

interface Values2 {
    'Abp.Localization.DefaultLanguage': string;
    'Abp.Timing.TimeZone': string;
    'Abp.Identity.Password.RequiredLength': string;
    'Abp.Identity.Password.RequiredUniqueChars': string;
    'Abp.Identity.Password.RequireNonAlphanumeric': string;
    'Abp.Identity.Password.RequireLowercase': string;
    'Abp.Identity.Password.RequireUppercase': string;
    'Abp.Identity.Password.RequireDigit': string;
    'Abp.Identity.Lockout.AllowedForNewUsers': string;
    'Abp.Identity.Lockout.LockoutDuration': string;
    'Abp.Identity.Lockout.MaxFailedAccessAttempts': string;
    'Abp.Identity.SignIn.RequireConfirmedEmail': string;
    'Abp.Identity.SignIn.EnablePhoneNumberConfirmation': string;
    'Abp.Identity.SignIn.RequireConfirmedPhoneNumber': string;
    'Abp.Identity.User.IsUserNameUpdateEnabled': string;
    'Abp.Identity.User.IsEmailUpdateEnabled': string;
    'Abp.Identity.OrganizationUnit.MaxUserMembershipCount': string;
    'Abp.Account.IsSelfRegistrationEnabled': string;
    'Abp.Account.EnableLocalLogin': string;
}

interface Auth {
    grantedPolicies: any;
}



interface Localization {
    values: Values;
    resources: Values;
    languages: Language[];
    currentCulture: CurrentCulture;
    defaultResourceName: string;
    languagesMap: LanguagesMap;
    languageFilesMap: LanguageFilesMap;
}

interface LanguageFilesMap {
    'bootstrap-datepicker': Bootstrapdatepicker[];
    moment: Bootstrapdatepicker[];
    'jquery.timeago': Bootstrapdatepicker[];
    'jquery-validation': Bootstrapdatepicker[];
}

interface LanguagesMap {
    'bootstrap-datepicker': Bootstrapdatepicker[];
    moment: Bootstrapdatepicker[];
}

interface Bootstrapdatepicker {
    name: string;
    value: string;
}

interface CurrentCulture {
    displayName: string;
    englishName: string;
    threeLetterIsoLanguageName: string;
    twoLetterIsoLanguageName: string;
    isRightToLeft: boolean;
    cultureName: string;
    name: string;
    nativeName: string;
    dateTimeFormat: DateTimeFormat;
}

interface DateTimeFormat {
    calendarAlgorithmType: string;
    dateTimeFormatLong: string;
    shortDatePattern: string;
    fullDateTimePattern: string;
    dateSeparator: string;
    shortTimePattern: string;
    longTimePattern: string;
}

interface Language {
    cultureName: string;
    uiCultureName: string;
    displayName: string;
    twoLetterISOLanguageName: string;
    flagIcon?: string;
}

interface Values {
}